'\" t
.\"     Title: git-new-branch
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 10/26/2021
.\"    Manual: Chromium depot_tools Manual
.\"    Source: depot_tools 5c9e8b47
.\"  Language: English
.\"
.TH "GIT\-NEW\-BRANCH" "1" "10/26/2021" "depot_tools 5c9e8b47" "Chromium depot_tools Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-new-branch \- Create a new branch with correct tracking information\&.
.SH "SYNOPSIS"
.sp
.nf
\fIgit new\-branch\fR <branch_name>
\fIgit new\-branch\fR \-\-upstream_current <branch_name>
\fIgit new\-branch\fR \-\-upstream <REF> <branch_name>
\fIgit new\-branch\fR \-\-lkgr <branch_name>
\fIgit new\-branch\fR \-\-inject_current <branch_name>
.fi
.sp
.SH "DESCRIPTION"
.sp
Creates a new branch\&. By default the new branch will track the configured upstream for the repo (defaults to \fIorigin/main\fR)\&. If one of the other options is specified, it will track that other ref instead\&.
.sp
Conceptually, each branch in your repo represents one \fIChange List (CL)\fR\&. If you have many independent CLs (i\&.e\&. the changes in one do not interact with/depend on the changes in another), then you should create them as new branches tracking the default upstream (i\&.e\&. \fBgit new\-branch <branch_name>\fR)\&. If you have features which depend on each other, you should create stacked branches using \fBgit new\-branch \-\-upstream_current <branch_name>\fR\&.
.SH "OPTIONS"
.PP
\-\-upstream_current
.RS 4
Set the tracking (upstream) branch to the currently\-checked\-out branch\&.
.RE
.PP
\-\-upstream <REF>
.RS 4
Set the tracking (upstream) branch to <REF>\&. <REF> may be a local branch, remote branch, or a tag\&.
.RE
.PP
\-\-lkgr
.RS 4
Alias for
\fB\-\-upstream lkgr\fR\&.
.RE
.PP
\-\-inject_current
.RS 4
Set the tracking (upstream) branch of the newly\-created branch to the tracking (upstream) branch of the currently\-checked\-out branch and set the tracking (upstream) branch of the currently\-checked\-out branch to the newly\-created branch\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Before: current > upstream
After: current > new > upstream
.fi
.if n \{\
.RE
.\}
.RE
.PP
<branch_name>
.RS 4
The name for the new branch\&.
.RE
.SH "CONFIGURATION VARIABLES"
.SS "depot\-tools\&.upstream"
.sp
This configures the default \fIupstream\fR for all new branches\&. If it is unset, it defaults to \fIorigin\fR\*(Aqs default branch or \fIorigin/main\fR if that can\(cqt be found\&. This is considered to be the \fIroot\fR branch\&.
.SH "EXAMPLE"
.sp

.sp
.if n \{\
.RS 4
.\}
.nf
\fB$ git map\-branches \-v\fR
origin/main
  cool_feature         [ 4 commits            ]
    subfeature         [ 2 commits | behind 1 ]
  fixit                [ 2 commits            ]
\fB    frozen_branch *    [ 3 commits            ]
$ git new\-branch independent_cl\fR
\fB$ git map\-branches \-v\fR
\fBorigin/main
\fR  cool_feature        [ 4 commits            ]
    subfeature        [ 2 commits | behind 1 ]
  fixit               [ 2 commits            ]
    frozen_branch     [ 3 commits            ]
\fB  independent_cl *
$ vi foo && git add \-A && git commit \-m foo\fR
\fB$ git map\-branches \-v\fR
origin/main
  cool_feature        [ 4 commits            ]
    subfeature        [ 2 commits | behind 1 ]
  fixit               [ 2 commits            ]
    frozen_branch     [ 3 commits            ]
\fB  independent_cl *    [ 1 commit             ]
$ git new\-branch \-\-upstream subfeature nested_cl\fR
\fB$ git map\-branches \-v\fR
origin/main
  cool_feature       [ 4 commits            ]
\fB    subfeature       [ 2 commits | behind 1 ]  \fR\fB\fB(1)\fR\fR\fB
      nested_cl *
\fR  fixit              [ 2 commits            ]
    frozen_branch    [ 3 commits            ]
  independent_cl     [ 1 commit             ]
\fB$ git checkout cool_feature\fR
Switched to branch \*(Aqcool_feature\*(Aq
Your branch is ahead of \*(Aqorigin/main\*(Aq by 4 commits\&.
  (use "git push" to publish your local commits)
\fB$ git new\-branch \-\-upstream_current cl_depends_on_cool_feature\fR
\fB$ git map\-branches \-v\fR
origin/main
\fB  cool_feature                      [ 4 commits            ]
    cl_depends_on_cool_feature *
\fR    subfeature                      [ 2 commits | behind 1 ]
      nested_cl
  fixit                             [ 2 commits            ]
    frozen_branch                   [ 3 commits            ]
  independent_cl                    [ 1 commit             ]
\fB$ git checkout subfeature\fR
Your branch and \*(Aqcool_feature\*(Aq have diverged,
and have 2 and 1 different commits each, respectively\&.
  (use "git pull" to merge the remote branch into yours)
\fB$ git new\-branch \-\-inject_current injected_cl\fR
\fB$ git map\-branches \-v\fR
origin/main
\fB  cool_feature                    [ 4 commits            ]
    cl_depends_on_cool_feature
    injected_cl *
\fR      subfeature                  [ 2 commits | behind 1 ]
        nested_cl
  fixit                           [ 2 commits            ]
    frozen_branch                 [ 3 commits            ]
  independent_cl                  [ 1 commit             ]
.fi
.if n \{\
.RE
.\}
.sp

.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
Note that these branches are cyan because they are currently the same
\fIcommit\fR
object\&. See
\fBgit-map-branches\fR(1)
for more detail\&.
.RE
.SH "SUGGESTED ALIASES"
.sp
Some common short\-hand aliases\&. Feel free to add these to your \fI~/\&.gitconfig\fR file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
[alias]
  nb = new\-branch
  tb = new\-branch \-\-upstream_current  \fB(1)\fR
.fi
.if n \{\
.RE
.\}
.sp
.sp
\fB1. \fRmnemonic: tb \(-> "track branch"
.br
.SH "SEE ALSO"
.sp
\fBgit-rebase-update\fR(1), \fBgit-reparent-branch\fR(1), \fBgit-rename-branch\fR(1), \fBgit-upstream-diff\fR(1)
.SH "CHROMIUM DEPOT_TOOLS"
.sp
Part of the chromium \fBdepot_tools\fR(7) suite\&. These tools are meant to assist with the development of chromium and related projects\&. Download the tools by checking out the \m[blue]\fBgit repository\fR\m[]\&\s-2\u[1]\d\s+2\&.
.SH "NOTES"
.IP " 1." 4
git repository
.RS 4
\%https://chromium.googlesource.com/chromium/tools/depot_tools.git
.RE
